package router

import (
	"github.com/gogf/gf/frame/g"
	"github.com/gogf/gf/net/ghttp"
	"quabg/app/service"
)

func init() {
	s := g.Server()
	s.Group("/api", func(group *ghttp.RouterGroup) {
		group.Middleware(service.Middleware.CORS, service.Middleware.Ctx)

		// API 文档和调试接口
		// ...

		// 不需要Auth, 但需要验证码
		group.POST("/user/reg", nil)   // 根据实际情况开放
		group.POST("/user/login", nil) // 登录
		group.POST("/user/find", nil)  // 查找账户信息，短信或邮件发送

		// User
		group.Group("/user", func(group *ghttp.RouterGroup) {
			group.Middleware(service.Middleware.JwtAuth)

			group.POST("/reset_pwd", nil)
			group.POST("/get", nil)     // 获取用户信息
			group.POST("/get_all", nil) // 获取用户信息，包含分组，导航，分组配置等
			group.POST("/edit", nil)    // 修改部分用户信息
			// 子用户管理 【管理员和站长权限】
			group.Group("/sub", func(group *ghttp.RouterGroup) {
				group.POST("/list", nil) // 获取所有用户信息
				group.POST("/add", nil)  // 获取添加子用户
				group.POST("/edit", nil) // 修改子用户信息，ID=-1意味新增
				group.POST("/del", nil)  // 删除子用户
			})
		})
		// Role，站长/管理员/普通用户
		group.Group("/role", func(group *ghttp.RouterGroup) {
			group.Middleware(service.Middleware.JwtAuth)

			group.POST("/list", nil) // 获取信息列表
			group.POST("/get", nil)  // 获取ID对应信息
			//group.POST("/edit", nil)  // 修改配置信息，ID=-1意味着新增
			//group.POST("/del", nil) // 删除ID对应信息
			// cfg -> nav
			group.Group("/nav", func(group *ghttp.RouterGroup) {
				group.POST("/list", nil) // 获取信息列表
				group.POST("/get", nil)  // 获取ID对应信息
				group.POST("/edit", nil) // 修改配置信息，ID=-1意味着新增 【管理员】
				//group.POST("/del", nil) // 删除ID对应信息
			})
		})
		// Group，分组/组织
		group.Group("/group", func(group *ghttp.RouterGroup) {
			group.Middleware(service.Middleware.JwtAuth)

			group.POST("/list", nil) // 获取信息列表，只有【站长】有此权限
			group.POST("/get", nil)  // 获取ID对应信息
			group.POST("/edit", nil) // 修改配置信息，ID=-1意味着新增，只有【管理员】有此权限
			group.POST("/del", nil)  // 删除ID对应信息，只有【站长】有此权限
			group.POST("/cfg", nil)  // 修改group的网站配置信息，只有【管理员】有此权限
		})
		// 短信，微信等后台服务
		group.Group("/util", func(group *ghttp.RouterGroup) {
			group.Middleware(service.Middleware.JwtAuth)

			group.POST("/msg_sms", nil)    // 推送信息到短信
			group.POST("/msg_qq", nil)     // 推送信息到QQ
			group.POST("/msg_wechat", nil) // 推送信息到微信
		})
		// 业务相关部分，根据实际情况使用
		// dev
		// submod
	})
}
